package com.qf.face.config;

import com.baidu.aip.face.AipFace;
import org.apache.tomcat.util.codec.binary.Base64;
import org.json.JSONObject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;

/**
 * 百度云的配置信息
 * @version v1.0.0
 * @Description:
 * @author: 姜红凯
 * @date: 2022.04.12
 * @since 1.0
 */
@Configuration
public class BaiDuConfig {
    public static final String APP_ID = "25953198";
    public static final String API_KEY = "7O0PO6EuuCkhTOjhv8X4Sttw";
    public static final String SECRET_KEY = "65ekSwcFK7Iy3BHjbHuz3Vdz6GcCdysg";

    /**
     * 初始化一个AipFace
     * @return 返回百度人脸识别的API客户端。
     */
    @Bean
    public AipFace getAipFace() {
        AipFace aipFace=new AipFace(APP_ID, API_KEY, SECRET_KEY);
        // 可选：设置网络连接参数
        aipFace.setConnectionTimeoutInMillis(2000);
        aipFace.setSocketTimeoutInMillis(60000);
        // 可选：设置代理服务器地址, http和socket二选一，或者均不设置
        // 如果公司有网络策略，这里需要配置公司的http代理服务器的ip和socket代理服务器的ip
        //aipFace.setHttpProxy("proxy_host", proxy_port);  // 设置http代理
        //aipFace.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理
        return aipFace;
    }

    public static void main(String[] args) throws Exception {
        //需要一个图片文件
        File file=new File("D:\\FACE\\阳光美女.webp");
        //然后转成字节数组
        BufferedImage bufferedImage = ImageIO.read(file);
        ByteArrayOutputStream baos=new ByteArrayOutputStream();
        ImageIO.write(bufferedImage,"png",baos);
        byte [] bytes=baos.toByteArray();

        //然后编码成base64
        String base64= Base64.encodeBase64String(bytes);
        // 调用接口
        String image = base64;
        String imageType = "BASE64";

        // 人脸检测
        HashMap<String,String> options=new HashMap<>();
        //JSONObject res = new BaiDuConfig().getAipFace().detect(image, imageType, options);
        //System.out.println(res.toString(2));
    }
}
